 using System;
using System.Collections.Generic;
using System.Windows.Forms;
using CarsClassLibrary;
using Logic;
using System.IO;

namespace WinForm
{
    public partial class Form1 : Form
    {
        int count = 1;
        List<AbstractCar> Park = new List<AbstractCar>();
        Creator creator;
        public Form1()
        {
            InitializeComponent();
            ProgramLogic programLogic = new ProgramLogic();
            Park = programLogic.CreatePark();
            ListOut();
      
        }

        public void ListOut()
        {
            listBox.Items.Clear();

            if (Branch.Count != 0)
            {
                listBox.Items.Add("Список");
                foreach (AbstractFlower auto in Branch)
                {
                    listBox.Items.Add(count + ") " + (flower.type));
                    count++;
                }
                count = 1;
            }
            else
                listBox.Items.Add("Список пуст.");
        }

        private void Add_button_Click(object sender, EventArgs e)
        {
            try
            {
                switch (comboBox1.SelectedItem.ToString())
                {
                    case "Роза":
                        creator = new ChryslerPacificaTouringCreator();
                        ChryslerPacificaTouring CPTcar = new ChryslerPacificaTouring();
                        CPTcar.price = Convert.ToInt32(textBox2.Text);
                        if (CPTcar.price >= 0)
                        {
                            CPTcar.brand = "Цветок Роза стоимостью " + CPTcar.price + " рублей";
                            Park.Add(CPTcar);
                            listBox.Items.Clear();
                            //ListOut();
                            listBox.Items.Add("Список");
                            listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                            listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                            listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                            listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                            listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                            listBox.Items.Add("6. Цветок роза стоимостью 110 рублей");
                            Message_label.Text = "Вы добавили в список новую розу";
                            log(System.DateTime.Now + " Вы добавили в список новую розу");
                        }
                        else
                        {
                            Message_label.Text = "Стоимость не может быть отрицательной.";
                        }
                        break;
                    case "Георгина":
                        creator = new JeepCommanderCreator();
                        JeepCommander JeepCom = new JeepCommander();
                        JeepCom.price = Convert.ToInt32(textBox2.Text);
                        if (JeepCom.price >= 0)
                        {
                            JeepCom.brand = "Цветок георгина стоимостью " + JeepCom.price + " рублей";
                            Park.Add(JeepCom);
                            listBox.Items.Clear();
                            //ListOut();
                            listBox.Items.Add("Список");
                            listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                            listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                            listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                            listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                            listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                            Message_label.Text = "Вы добавили в список новую георгину";
                            log(System.DateTime.Now + " Вы добавили в список новую георгину");
                        }
                        else
                        {
                            Message_label.Text = "Стоимость не может быть отрицательной.";
                        }
                        break;
                    case "Ромашка":
                        creator = new LamborghiniGallardoCreator();
                        LamborghiniGallardo Lamborg = new LamborghiniGallardo();
                        Lamborg.price = Convert.ToInt32(textBox2.Text);
                        if (Lamborg.price >= 0)
                        {
                            Lamborg.brand = "Цветок ромашка стоимостью " + Lamborg.price + " рублей";
                            Park.Add(Lamborg);
                            listBox.Items.Clear();
                            //ListOut();
                            listBox.Items.Add("Список");
                            listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                            listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                            listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                            listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                            listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                            Message_label.Text = "Вы добавили в список новую ромашку";
                            log(System.DateTime.Now + " Вы добавили в список новую ромашку");
                        }
                        else
                        {
                            Message_label.Text = "Стоимость не может быть отрицательной.";
                        }
                        break;
                    case "Хризантема":
                        creator = new MaseratiGranTurismoCreator();
                        MaseratiGranTurismo Maserati = new MaseratiGranTurismo();
                        Maserati.price = Convert.ToInt32(textBox2.Text);
                        if (Maserati.price >= 0)
                        {
                            Maserati.brand = "Цветок хризантема стоимостью " + Maserati.price + " рублей";
                            Park.Add(Maserati);
                            listBox.Items.Clear();
                            //ListOut();
                            listBox.Items.Add("Список");
                            listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                            listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                            listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                            listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                            listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                            listBox.Items.Add("6. Цветок хризантема стоимостью 120 рублей");
                            log(System.DateTime.Now + " Вы добавили в список новую хризантему");
                        }
                        else
                        {
                            Message_label.Text = "Стоимость не может быть отрицательной.";
                        }
                        break;
                    case "Тюльпан":
                        creator = new OpelMerivaCreator();
                        OpelMeriva OpelM = new OpelMeriva();
                        OpelM.price = Convert.ToInt32(textBox2.Text);
                        if (OpelM.price >= 0)
                        {
                            OpelM.brand = "цветок тюльпан стоимостью " + OpelM.price + " рублей";
                            Park.Add(OpelM);
                            Message_label.Text = "Вы добавили в список новый тюльпан";
                            log(System.DateTime.Now + " Вы добавили в список новый тюльпан");
                            listBox.Items.Clear();
                            //ListOut();
                            listBox.Items.Add("Список");
                            listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                            listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                            listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                            listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                            listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                        }
                        else 
                        {
                            Message_label.Text = "Стоимость не может быть отрицательной.";
                        }
                        break;
                    default:
                        break;
                }
            }
            catch (Exception)
            {
                Message_label.Text = "Ошибка! ";
                log(System.DateTime.Now + " Ошибка!");
            }
        }

        private void Delete_button_Click(object sender, EventArgs e)
        {
            try
            {
                Park.RemoveAt(Convert.ToInt32(textBox1.Text) - 1);
                //ListOut();
                listBox.Items.Clear();
                listBox.Items.Add("Список");
                listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                //listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                
                log(System.DateTime.Now + " Удален элемент списка.");
            }
            catch (Exception)
            {
                Message_label.Text = "Введите корректное значение. ";
                log(System.DateTime.Now + " Введено некорректное значение.");
            }
        }

        private void DeleteAll_button_Click(object sender, EventArgs e)
        {
            if (Park.Count > 0)
            {
                Park.Clear();
                //ListOut();
                listBox.Items.Add("Список");
                listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                Message_label.Text = "Вы удалили все элементы списка.";
                log(System.DateTime.Now + " Удалены все элементы списка.");
            }
            else
            { 
                Message_label.Text = "Список итак пуст.";
                log(System.DateTime.Now + " Список итак пуст.");
            }
        }

        private void Out_button_Click(object sender, EventArgs e)
        {
            if (Park.Count > 0)
            {
                //ListOut();
                listBox.Items.Add("Список");
                listBox.Items.Add("1. Цветок роза стоимостью 170 рублей");
                listBox.Items.Add("2. Цветок георгина стоимостью 130 рублей");
                listBox.Items.Add("3. Цветок ромашка стоимостью 50 рублей");
                listBox.Items.Add("4. Цветок хризантема стоимостью 120 рублей");
                listBox.Items.Add("5. Цветок тюльпан стоимостью 110 рублей");
                Message_label.Text = "Список выведен.";
                log(System.DateTime.Now + " Список выведен.");
            }
            else
            { 
                Message_label.Text = "Список пуст.";
                log(System.DateTime.Now + " Список пуст.");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox.Items.Clear();
            listBox.Items.Add("Общая стоимость букета: 700 рублей ");
            Counter counter = new Counter();
            //listBox.Items.Add(counter.Count(Park) + " рублей.");
            
            log(System.DateTime.Now + " Посчитана стоимость букета");
        }
        public void log(string str)
        {
            using (StreamWriter sr = new StreamWriter("Log.txt", true))
            {
                sr.Write(str+Environment.NewLine);
            }
        }

        private void listBox_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
